package com.atguigu.gmall.product.controller;

import com.atguigu.gmall.common.cache.BloomName;
import com.atguigu.gmall.common.constant.RedisConst;
import com.atguigu.gmall.common.result.Result;
import com.atguigu.gmall.product.service.SkuInfoService;
import org.redisson.api.RBloomFilter;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

@RestController
public class BloomFilterAddDataController {


    @Qualifier(BloomName.SKU)
    @Autowired
    RBloomFilter<Object> skuFilter;

    @Autowired
    SkuInfoService skuInfoService;


    /**
     * 布隆过滤器添加所有商品
     *
     * 布隆重建
     * @return
     */
    @GetMapping("/add/bloom/sku")  //好久运行一次
    public Result bloomAddAll(){  //定时任务，每隔7天的晚上3:30，执行一次这个方法
        skuFilter.delete(); //删除旧布隆，redis中的数据就删除了
        //服务器时间判断，不是晚上不让做
        //重新初始化一个新bloom
        boolean b = skuFilter.tryInit(10000L, 0.001);
        List<Long> skuIds =  skuInfoService.getAllId();

        for (Long skuId : skuIds) {
            //新的布隆
            skuFilter.add(RedisConst.SKUKEY_PREFIX + skuId + RedisConst.SKUKEY_SUFFIX);
        }

        return Result.ok(b);

    }

//    @GetMapping("/add/bloom/spu")
//    public String bloomAddAll(){
//    }
}